home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CU Amiga Super CD-ROM 18
/
CU Amiga Magazine's Super CD-ROM 18 (1997)(EMAP Images)(GB)[!][issue 1998-01].iso
/
CUCD
/
Programming
/
ARexxGuide
/
Extras
/
UnCrunch.rexx
< prev
next >
Wrap
OS/2 REXX Batch file
|
1994-03-24
|
3KB
|
102 lines
/**** UnCrunch.rexx **************** Unarchive any file ****************
**
** A tutorial example to ARexxGuide
*/
arg FileName UCdir .
if FileName = '?' then
do
options prompt 'UCR FILENAME/A, DESTINATION/F: '
pull FileName UCdir
end
if FileName = '' then
do
call Usage('You must supply the name of a file to uncrunch.')
exit 19
end
else
if ~exists(FileName) then
do
call Usage(Can't open' FileName 'for input - object not found)
exit 20
end
if UCdir = '' then
UCdir = 'RAM:'
else
if right(UCdir, 1) ~= ':' & right(UCdir, 1) ~= '/' then
UCdir = UCdir || '/'
ArcExt = upper(right(FileName, 3))
address command
select
when ArcExt = 'LZH' | ArcExt = 'LHA' then
/* Substitute 'lz' for 'lha'if you prefer to use it */
'Lha -x x' FileName '#?' UcDir
when ArcExt = 'ZOO' then
call SetDest('ZOO x//')
when ArcExt = 'ARC' then
call SetDest('ARC x')
when ArcExt = 'ZIP' then
call SetDest('UNZIP')
otherwise
say FileName 'is not valid archive'
say 'Filename must end in "LZH", "LHA", "ZOO", "ZIP", or "ARC"'
exit 11
end
exit
/* ZOO and ARC uncrunch all files to the current directory **
** The following subroutine changes the current directory to that **
** specified for uncrunching */
SetDest:
parse arg AProg
cdir = pragma('D') /* Store the current directory */
/* Change archive filename to a path/file that can be */
/* understood from a different directory */
FDir = CDir
select
when pos(':', FileName) > 1 then
FDir = '' /* device is already specified. Don't change*/
when left(FileName, 1) == '/' then
/* Strip off leading '/' in filename */
do while left(FileName, 1) == '/' /* is 1st char '/'? */
FileName = substr(FileName, 2) /* strip it off */
PLn = length(FDir) - 1
DivPos = max(lastpos('/', FDir,Pln),,
lastpos(':', FDir, Pln))
FDir = left(FDir, DivPos)
end
when left(FileName,1) = ':' then
parse var CDir FDir ':' .
otherwise
if verify(right(FDir, 1), '/:', 'M') ~= 0 then
FDir = FDir'/'
end
FileName = FDir||FileName
/* Perform the uncrunching */
'cd "'UCdir'"'
''AProg '"'FileName'"'
'cd "'CDir'"'
return
Usage:
if arg(1, 'E') then
say arg(1)
say 'Usage:'
say ' ucr <filename> [destination]'
say ' <filename> must end with valid archive extension.'
say ' [destination] is the dir in which files will be uncrunched.'
say ''
exit 20
end